package com.mmy.dao.bidtender;

import java.util.List;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;

import com.mmy.domain.bidtender.VBidInvite;

public interface VBidInviteRepository extends JpaRepository<VBidInvite, Integer> {
	/**
	 * 个人中心通过创建人查找招标信息
	 *
	 * @author 创建人 hanxl 整理
	 * @date 创建日期 2020.10.29
	 */
	@Query(value = "select * from vBidInvite where cCreator=?1  and cSpare1=?2 order by dBeginDate desc limit ?3,?4", nativeQuery = true)
	List<VBidInvite> findByCreator(String strUserName, int iOrgID, int iTempPageNo, int iPageSize);

	/**
	 * 后台招标管理中所有公司的招标信息
	 *
	 * @author 创建人 hanxl 整理 修改人hanxl
	 * @date 创建日期 2020.11.19 修改时间 2021.02.22
	 */
	@Query(value = "select * from vBidInvite  order by dBeginDate ", nativeQuery = true)
	List<VBidInvite> findALL();

	/**
	 * 后台招标管理中显示自己公司的招标信息
	 *
	 * @author 创建人 hanxl 整理 修改人hanxl
	 * @date 创建日期 2020.11.19 修改时间 2021.02.22
	 */
	@Query(value = "select * from vBidInvite where cSpare1=:iOrgID order by dBeginDate ", nativeQuery = true)
	List<VBidInvite> findByOrgID(int iOrgID);

	/**
	 * 后台招标管理中显示自己公司的招标信息
	 *
	 * @author 创建人 hanxl 整理 修改人hanxl
	 * @date 创建日期 2020.11.19 修改时间 2021.02.22
	 */
	@Query(value = "select * from vBidInvite where (:strInviteName = \"\" or cInviteName like %:strInviteName%) "
			+ "and (:strType = \"\" or iType = :strType) "
			+ "and cSpare1=:iOrgID order by dBeginDate desc limit :iTempPageNo,:iPageSize", nativeQuery = true)
	List<VBidInvite> findSearchByOrgID(@Param("iOrgID") int iOrgID, @Param("strInviteName") String strInviteName,
			@Param("strType") String strType, @Param("iTempPageNo") int iTempPageNo, @Param("iPageSize") int iPageSize);

	/**
	 * 后台招标管理中超级管理员登录显示所有招标信息
	 *
	 * @author 创建人 hanxl 整理 修改人hanxl
	 * @date 创建日期 2020.11.19 修改时间 2021.02.22
	 */
	@Query(value = "select * from vBidInvite where (:strInviteName = \"\" or cInviteName like %:strInviteName%) and (:strType = \"\" or iType = :strType) order by dBeginDate desc limit :iTempPageNo,:iPageSize", nativeQuery = true)
	List<VBidInvite> findSearchALL(@Param("strInviteName") String strInviteName, @Param("strType") String strType,
			@Param("iTempPageNo") int iTempPageNo, @Param("iPageSize") int iPageSize);
	/* 获得所有招标信息 自带查询 */
	/* 通过招标类型查询 */

	@Query(value = "select * from vBidInvite where iType=?1", nativeQuery = true)
	List<VBidInvite> findByType(byte type);

	/* 通过招标名称查询 */

	@Query(value = "select * from vBidInvite where cInviteName like %?1%", nativeQuery = true)
	List<VBidInvite> findByInviteName(String inviteName);

	/* 通过招标名称和类型查询 */

	@Query(value = "select * from vBidInvite where cInviteName like %?1%  and iType=?2", nativeQuery = true)
	List<VBidInvite> findByInviteNameAndType(String inviteName, byte type);

	/* 通过在结束日期内的查找招标信息 */

	@Query(value = "select * from vBidInvite where date_format(dEndDate,'%Y-%m-%d')>=date_format(now(),'%Y-%m-%d')", nativeQuery = true)
	List<VBidInvite> findALLEndDate1();

	/* 通过在结束日期外的查找招标信息 */

	@Query(value = "select * from vBidInvite where date_format(dEndDate,'%Y-%m-%d')<date_format(now(),'%Y-%m-%d')", nativeQuery = true)
	List<VBidInvite> findALLEndDate2();

	/* 通过类型和在结束日期内的查找招标信息 */

	@Query(value = "select * from vBidInvite where iType=?1 and date_format(dEndDate,'%Y-%m-%d')>=date_format(now(),'%Y-%m-%d')", nativeQuery = true)
	List<VBidInvite> findByTypeAndEndDate1(byte iType);

	/* 通过类型和在结束日期内的查找招标信息 */

	@Query(value = "select * from vBidInvite where iType=?1 and date_format(dEndDate,'%Y-%m-%d')<date_format(now(),'%Y-%m-%d')", nativeQuery = true)
	List<VBidInvite> findByTypeAndEndDate2(byte iType);

	/* 通过招标名和在结束日期内的查找招标信息 */

	@Query(value = "select * from vBidInvite where cInviteName like %?1% and date_format(dEndDate,'%Y-%m-%d')>=date_format(now(),'%Y-%m-%d')", nativeQuery = true)
	List<VBidInvite> findByInviteNameAndEndDate1(String strInviteName);

	/* 通过招标名和在结束日期外的查找招标信息 */

	@Query(value = "select * from vBidInvite where cInviteName like %?1% and date_format(dEndDate,'%Y-%m-%d')<date_format(now(),'%Y-%m-%d')", nativeQuery = true)
	List<VBidInvite> findByInviteNameAndEndDate2(String strInviteName);

	/* 通过招标名、类型和在结束日期内的查找招标信息 */

	@Query(value = "select * from vBidInvite where cInviteName like %?1% and iType=?2 and date_format(dEndDate,'%Y-%m-%d')>=date_format(now(),'%Y-%m-%d')", nativeQuery = true)
	List<VBidInvite> findByInviteNameAndTypeAndEndDate1(String strInviteName, byte iType);

	/* 通过招标名、类型和在结束日期外的查找招标信息 */

	@Query(value = "select * from vBidInvite where cInviteName like %?1% and iType=?2 and date_format(dEndDate,'%Y-%m-%d')<date_format(now(),'%Y-%m-%d')", nativeQuery = true)
	List<VBidInvite> findByInviteNameAndTypeAndEndDate2(String strInviteName, byte iType);

	/**
	 * 个人中心 点击招标名称 显示详情 通过招标ID查找招标信息 删除招标时查询
	 *
	 * 后台查看该招标写详细信息
	 * 
	 * @author 创建人 hanxl 整理
	 * @date 创建日期 2020.10.29
	 */
	@Query(value = "select * from vBidInvite where iInviteID=?1", nativeQuery = true)
	VBidInvite findByInviteID(int inviteID);

	/**
	 * 前台招投标模块显示招标信息
	 *
	 * @author 创建人 hanxl 整理
	 * @date 创建日期 2020.11.19
	 */
	@Query(value = "select * from vBidInvite where (:strInviteName = \"\" or cInviteName like %:strInviteName%) and (:strType = \"\" or iType = :strType)and (:strBudget = \"\" or fBudget = :strBudget) and left(iZoneID,4)=left(:iZoneID,4) and iState=3 order by dBeginDate desc limit :iTempPageNo,:iPageSize ", nativeQuery = true)
	List<VBidInvite> findByCityID(@Param("strInviteName") String strInviteName, @Param("strType") String strType,
			@Param("strBudget") String strBudget, @Param("iTempPageNo") int iTempPageNo,
			@Param("iPageSize") int iPageSize, @Param("iZoneID") int iZoneID);

	/**
	 * 后台招标管理中显示要审核的招标信息
	 *
	 * @author 创建人 hanxl 整理
	 * @date 创建日期 2020.11.19 修改时间2021.03.17
	 */
	@Query(value = "select * from vBidInvite where  iState=2 order by dBeginDate desc ", nativeQuery = true)
	List<VBidInvite> findByState();

	/**
	 * 函数功能说明：前台首页招标模块显示公务类型的已发布的招标信息
	 *
	 * @param 参数说明 tBidInvite
	 * @return 返回值说明 jsp页面
	 * @author 创建人 hanxl 整理
	 * @date 创建日期 2020.11.19
	 */
	@Query(value = "select * from vBidInvite where iType=0 and left(iZoneID,4)=left(:iZoneID,4) and  iState=3 order by dBeginDate desc limit 10", nativeQuery = true)
	List<VBidInvite> findByType0(@Param("iZoneID") int iZoneID);

	/**
	 * 函数功能说明：前台首页招标模块显示团建类型的已发布的招标信息
	 *
	 * @param 参数说明 tBidInvite
	 * @return 返回值说明 jsp页面
	 * @author 创建人 hanxl 整理
	 * @date 创建日期 2020.11.19
	 */
	@Query(value = "select * from vBidInvite where iType=1 and left(iZoneID,4)=left(:iZoneID,4) and  iState=3 order by dBeginDate desc limit 10", nativeQuery = true)
	List<VBidInvite> findByType1(@Param("iZoneID") int iZoneID);

	/**
	 * 函数功能说明：前台首页招标模块显示业内类型的已发布的招标信息
	 *
	 * @param 参数说明 tBidInvite
	 * @return 返回值说明 jsp页面
	 * @author 创建人 hanxl 整理
	 * @date 创建日期 2020.11.19
	 */
	@Query(value = "select * from vBidInvite where iType=2 and left(iZoneID,4)=left(:iZoneID,4) and  iState=3 order by dBeginDate desc limit 10", nativeQuery = true)
	List<VBidInvite> findByType2(@Param("iZoneID") int iZoneID);

	/**
	 * 函数功能说明：前台首页招标模块显示私密游类型的已发布的招标信息
	 *
	 * @param 参数说明 tBidInvite
	 * @return 返回值说明 jsp页面
	 * @author 创建人 hanxl 整理
	 * @date 创建日期 2020.11.19
	 */
	@Query(value = "select * from vBidInvite where iType=3 and left(iZoneID,4)=left(:iZoneID,4) and  iState=3 order by dBeginDate desc limit 10", nativeQuery = true)
	List<VBidInvite> findByType3(@Param("iZoneID") int iZoneID);

	/**
	 * 后台招标管理中超级管理员登录显示所有招标信息
	 *
	 * @author 创建人 hanxl 整理 修改人hanxl
	 * @date 创建日期 2020.11.19 修改时间 2021.02.22
	 */
	@Query(value = "select * from vBidInvite where iState=2  order by dBeginDate desc limit :startIndex,:count", nativeQuery = true)
	List<VBidInvite> findSearchReview(@Param("startIndex") int startIndex, @Param("count") int count);

}
